//这个例子使用了嵌套并行区和临界区，目的在于展示PINTOOL的正确性和log文件的组织和格式。
//log文件的组织已在上一个文档中说详细说明，注释中也会有解释。
//访存记录的格式为<PC, 访问地址， 访问宽度， 读/写， 线程号， 锁地址（无锁则为NULL），指令所属的函数（用于调试）>。
//与上个文档中规定的格式的唯一差别是在最后加上了指令所属的函数名称。

#include<omp.h>
#include<stdio.h>
int main()
{
	char shared[16];
	printf("start addre : %p\n", shared);
#pragma omp parallel
	{
		if (omp_get_thread_num() == 0) {
			*(int*)(shared + 1) = 1;
			*(int*)(shared + 2) = 1;
		}
		if (omp_get_thread_num() == 1) {
			char *p_size1 = shared;
			short *p_size2 = (short*)(shared + 1);
			int *p_size4 = (int *)(shared + 2);
			int *p1_size4 = (int *)(shared + 3);
			int *p2_size4 = (int *)(shared + 8);

			*p_size1 = 1;
			*p_size4 = 1;
			*p1_size4 = 1;
			*p_size2 = 1;
			*p2_size4 = 1;
		}
	}
}
